package com.nandro.nandrokont;

import java.io.FileNotFoundException;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.view.View;
import android.widget.Button;

public class Sosioa {
	
	protected Activity _activity;
	private JSONObject _datosJSON;
	private String _fileName;
	private double _deudaActual;
	private double _aurrekoKontsumoa;
	private double _hilekoKuota;
	private String _name;
	protected Button _button;

	/*
    @SuppressLint("SimpleDateFormat")
	public static String getFechaActual() {
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
		//get current date time with Calendar()
		Calendar cal = Calendar.getInstance();
		return dateFormat.format(cal.getTime());
	}
	*/
	public Sosioa(String name, double hilekoKuota, Activity activity, Button button, String fileName)
	{
		_name             = name;
		_activity         = activity;
		_fileName         = fileName;
		_deudaActual      = 0;
		_button           = button;
		_hilekoKuota      = hilekoKuota;
		_aurrekoKontsumoa = 0;

		_datosJSON = null;
		try
		{
			((MainActivity)_activity).fileCheckOrCreation(fileName, "{\"Name\":\"" + _name +"\",\"AurrekoKontsumoa\":0,\"HilekoKuota\":" + hilekoKuota + ",\"Consumos\":[],\"Ingresos\":[]}");

			String readString = ((MainActivity)_activity).readFileAsString(fileName);

			_datosJSON = new JSONObject(readString);
			
			_aurrekoKontsumoa = _datosJSON.getDouble("AurrekoKontsumoa");
			_hilekoKuota      = _datosJSON.getDouble("HilekoKuota");
			
			JSONArray consumos = _datosJSON.getJSONArray("Consumos");
			for(int i=0; i<consumos.length(); i++)
			{
				JSONObject consumo = consumos.getJSONObject(i);
				JSONArray productos = consumo.getJSONArray("Consumo");
				for(int j=0; j<productos.length(); j++)
				{
					JSONObject producto = productos.getJSONObject(j);
					int cant = producto.getInt("Cantidad");
					double price = producto.getDouble("Precio");
					
					_deudaActual += (double)(price * (double)cant);
				}
			}
		}
		catch (FileNotFoundException e1)
		{
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		catch (JSONException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		createSosioa();
	}

	public void  createSosioa(){
		_button.setOnClickListener(new View.OnClickListener() {
           public void onClick(View v) {
               // Perform action on click
            	sosioaClicked();
           }
       });
	}

	public void sosioaClicked(){
		setButtonBackground(R.drawable.buttonred);
		((MainActivity)_activity).changeCurrentSosioa(this);
	}

	public void setButtonBackground(int drawableId){
		_button.setBackgroundDrawable(_activity.getResources().getDrawable(drawableId));
   	//R.drawable.buttonred
   	//R.drawable.buttonnormal
	}

	public double getDeudaActual() {
		return _deudaActual;
	}
	
	public double getAurrekoKontsumoa() {
		return _aurrekoKontsumoa;
	}

	public double getDeudaKuota() {
		return _hilekoKuota;
	}
	
	public String getName() {
		return _name;
	}

	public void addConsumo(JSONArray producValue, String fecha) {
		// TODO Auto-generated method stub
		try
		{
			JSONArray consumos = _datosJSON.getJSONArray("Consumos");

			JSONObject consumo = new JSONObject();
			consumo.put("Fecha", fecha);
		    
			consumo.put("Consumo", producValue);
			
			consumos.put(consumo);
			
			_datosJSON.remove("Consumos");
			_datosJSON.put("Consumos", consumos);
			
			updateDeudaActual(producValue);
			
			((MainActivity)_activity).writeToFile(_fileName, _datosJSON.toString());
		}
		catch (JSONException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	private void updateDeudaActual(JSONArray producValue) {
		try
		{
			for(int j=0; j<producValue.length(); j++)
			{
				JSONObject producto = producValue.getJSONObject(j);
				int cant = producto.getInt("Cantidad");
				double price = producto.getDouble("Precio");
				
				_deudaActual += (double)(price * (double)cant);
			}
		}
		catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void deselected() {
		// TODO Auto-generated method stub
		setButtonBackground(R.drawable.buttonnormal);		
	}

	public void addErosketa(float prezioa, String deskribapena, String fecha) {
		try
		{
			JSONArray erosketak = _datosJSON.getJSONArray("Ingresos");
			
			JSONObject erosketa = new JSONObject();
			erosketa.put("Fecha", fecha);
	   		erosketa.put("Deskribapena", deskribapena);
	   		erosketa.put("Ingreso", prezioa);
	   		
	   		erosketak.put(erosketa);
			
			_datosJSON.remove("Ingresos");
			_datosJSON.put("Ingresos", erosketak);
			
			((MainActivity)_activity).writeToFile(_fileName, _datosJSON.toString());
		}
		catch (JSONException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void kontuaBukatu(String fecha) {
		((MainActivity)_activity).writeCopyToFile(_fileName, _datosJSON.toString(), fecha);

		try
		{
			_datosJSON.put("AurrekoKontsumoa", _deudaActual);
			_aurrekoKontsumoa = _deudaActual;
			_deudaActual = 0;

			JSONArray consumos = new JSONArray();
			JSONArray erosketak = new JSONArray();
			_datosJSON.put("Consumos", consumos);
			_datosJSON.put("Ingresos", erosketak);

			((MainActivity)_activity).writeToFile(_fileName, _datosJSON.toString());
		}
		catch (JSONException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

	public int getProduktuanKontsumoa(String productName)
	{
		try
		{
			JSONArray consumos = _datosJSON.getJSONArray("Consumos");
			int kontsumoa = 0;
			for(int i=0; i<consumos.length(); i++)
			{
				JSONObject consumo = consumos.getJSONObject(i);
				JSONArray productos = consumo.getJSONArray("Consumo");
				for(int j=0; j<productos.length(); j++)
				{
					JSONObject producto = productos.getJSONObject(j);
					String thisProductName = producto.getString("Producto");
					if(productName.equals(thisProductName))
					{
						kontsumoa += producto.getInt("Cantidad");
					}
				}
			}
			return kontsumoa;
		}
		catch (JSONException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
			return 0;
		}
	}
}
